﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Xml;

namespace GestorDeFlotasDesktop.Facturar
{
    public partial class Facturar : MasterPage
    {
        ArrayList array = new ArrayList();
        Form ventanPadre;
        private capaDatos.SQLSyntaxisGeneration inst = new capaDatos.SQLSyntaxisGeneration();
        DataTable dtgral;
         string clienteSelected;
         private double procentaje(double Numero, double porcentaje)
         {
             
             if (porcentaje > 0)
             {
                 return (Numero * porcentaje / 100);
             }
             else
             {
                 if (!rdbExento.Checked)
                 {
                     MessageBox.Show(" El porcentaje de iva  debe ser mayor que 0");

                
                 }
                 return 0;
             }
         }
    
         

        public Facturar(Form ventanaParam)
        {
            InitializeComponent();
            ocultarMenu(ref ventanPadre, ventanaParam);
        }

        private void Facturar_Load(object sender, EventArgs e)
        {
           
            dtgral =  inst.executeQuery("select * from  dbo.buscar_Clientes ");
            for (int item = 0; item <= dtgral.Rows.Count -1; item++)
            {
                cmbClientes.Items.Add(inst.executeQuery("select * from dbo.buscar_Clientes").Rows[item].ItemArray[0]);
            }
            cmbClientes.Visible = true;

            pnCatIvafcA.Visible = false;
            pnTotFcA.Visible = false;
            pnCatIvafcB.Visible = false;
            pnTotFcB.Visible = false;
           // dataGridView1.DataSource = SampleDataTable(4);
            cbDiaI.Items.Clear();
            cbDiaF.Items.Clear();
            cbMesI.Items.Clear();
            cbMesF.Items.Clear();
            
            for (int i = 1; i < 32; i++)
            {
                cbDiaI.Items.Add(i);
                cbDiaF.Items.Add(i);

            }
            for (int i = 1; i <13; i++)
            {
                cbMesI.Items.Add(i);
                cbMesF.Items.Add(i);
            }

        }

        private void Facturar_FormClosing(object sender, FormClosingEventArgs e)
        {
            ventanPadre.Visible = true;
        }

    
        private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbTipoFac.Text.Equals("A"))
            {
                // el iva esta incluido 
                pnCatIvafcA.Visible = false;
                pnTotFcA.Visible = false;
                pnCatIvafcB.Visible = true;
                pnTotFcB.Visible = true;
                  }
            else
            {// Se discrimina el iva porque es de rep ins a resp insc ( no es entra en detalle de si es con leyenda, solo a , o tipo M)
                pnCatIvafcA.Visible = true;
                pnTotFcA.Visible = true;
                pnCatIvafcB.Visible = false;
                pnTotFcB.Visible = false;
                 }
        }

        private void mostrarDatosCliente() {
            if (cmbClientes.SelectedItem != null) {
            clienteSelected = Convert.ToString(cmbClientes.SelectedItem).Split('-')[0];
            ArrayList parametrosSql = new ArrayList();
            /* formato de la fecha 07-01-2012 */
            parametrosSql = parametrosStoredProcedure(paramsNames("idCli"), paramsValues(clienteSelected));
            dtgral = inst.executeSp("PELUSA.DatosCliente", parametrosSql);
            txtName.Text = Convert.ToString(dtgral.Rows[0].ItemArray[0]);
            txtApellido.Text = Convert.ToString(dtgral.Rows[0].ItemArray[1]);
            txtDni.Text = Convert.ToString(dtgral.Rows[0].ItemArray[2]);
            }
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            double Importe_viaje = Convert.ToDouble(dtgral.Rows[e.RowIndex].ItemArray[1]);

            if (txtPorcentajeIva.Text == "") { txtPorcentajeIva.Text = "0"; }
            
            if (array.Contains(e.RowIndex))
            {
                     //si la posicion del item esta en el vector, es que ya se selecciono
                    array.Remove(e.RowIndex);
                    dataGridView1.Rows[e.RowIndex].SetValues(bool.FalseString);
                    if (Convert.ToString(cmbTipoFac.SelectedItem).Equals("B")) { txtTotalA.Text = Convert.ToString(Convert.ToDouble(txtTotalA.Text) - Importe_viaje); }
                    else { txtSubt.Text = Convert.ToString(Convert.ToDouble(txtSubt.Text) - Importe_viaje); }
                    completarIva();
                }
                else
                {   array.Add(e.RowIndex);
                    dataGridView1.Rows[e.RowIndex].SetValues(bool.TrueString);
                    if (Convert.ToString(cmbTipoFac.SelectedItem).Equals("B")) { txtTotalA.Text = Convert.ToString(Convert.ToDouble(txtTotalA.Text) + Importe_viaje); }
                    else { txtSubt.Text = Convert.ToString(Convert.ToDouble(txtSubt.Text) + Importe_viaje); }
                    completarIva();
                }

            }
        private string fechaIniciofAC() {

            return cbDiaI.Text + "/" + cbMesI.Text + "/" + txtAnioI.Text;
        
        }
        private string fechaFinfAC() {

            return cbDiaF.Text + "/" + cbMesF.Text + "/" + txtAnioF.Text;
        
        }

      
        private void button2_Click(object sender, EventArgs e)
        {
            clienteSelected = Convert.ToString(cmbClientes.SelectedItem).Split('-')[0];
         

            if (
              radioButton2.Checked == false &
              rdbExento.Checked == false &
              radioButton5.Checked == false &
              radioButton6.Checked == false) { MessageBox.Show("Debe seleccionar una categoria de IVA"); }
            else {
                ArrayList parametrosSql = new ArrayList();
    
                parametrosSql = parametrosStoredProcedure( paramsNames("fechaIni","fechaFin","ClientID","importeTotal" ),paramsValues(fechaFinfAC(), fechaIniciofAC(),Convert.ToInt64(clienteSelected),Convert.ToDouble( txtTotal.Text)));
                dtgral = inst.executeSp("PELUSA.InsertaFactura", parametrosSql);

                if (confirmarOperacion(dtgral)) { MessageBox.Show("Período Facturado con exito"); }  
            
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ArrayList parametrosSql = new ArrayList();
           /* formato de la fecha 07-01-2012 */
            parametrosSql = parametrosStoredProcedure(paramsNames("FechaIni", "FechaFin", "ClienteID"), paramsValues(darFecha(cbDiaI.Text ,cbMesI.Text ,txtAnioI.Text), darFecha( cbDiaF.Text  ,cbMesF.Text ,txtAnioF.Text ),clienteSelected));
            dtgral = inst.executeSp("PELUSA.ItemsFactura", parametrosSql);
            dataGridView1.DataSource = dtgral;
        }

        private string darFecha( string dia , string mes, string anio) { 
        
        return  dia + "-" + mes + "-" + anio ;
        }

        private void cmbClientes_Click(object sender, EventArgs e)
        {
        
        }

        private void cmbClientes_SelectedIndexChanged(object sender, EventArgs e)
        {

            mostrarDatosCliente();
        }

        private void txtTotal_TextChanged(object sender, EventArgs e)
        {

        }
        private void limpiarCombos()
        {
            radioButton2.Checked = false;
            rdbExento.Checked = false;
            radioButton5.Checked = false;
            radioButton6.Checked = false;
            txtTotalA.Text = "0";
            foreach (Control control in this.Controls)
            { if (control.GetType().FullName == "System.Windows.Forms.TextBox" | control.GetType().FullName == "System.Windows.Forms.ComboBox")
                {
                  control.Text = "";
                }                           
            }
            foreach (Control control in pnTotFcB.Controls )
            {
                if (control.GetType().FullName == "System.Windows.Forms.TextBox" | control.GetType().FullName == "System.Windows.Forms.ComboBox")
                {
                    control.Text = "0";
                } 
            }
        }

        private void btLimpiar_Click(object sender, EventArgs e)
        {
            limpiarCombos();
            dataGridView1.Columns.Clear();

        }

        private void txtImporteIva_TextChanged(object sender, EventArgs e)
        {
            if (Convert.ToDouble(txtPorcentajeIva.Text) > 0 & Convert.ToDouble(txtImporteIva.Text) <= 0) { MessageBox.Show("debe completarse la alicutota del iva"); }
            else { txtTotal.Text = Convert.ToString(Convert.ToDouble(txtSubt.Text) - Convert.ToDouble(txtImporteIva.Text)); }
        }

        private void completarIva()
        {
             txtImporteIva.Text  = Convert.ToString(procentaje(Convert.ToDouble(txtSubt.Text) , Convert.ToDouble(txtPorcentajeIva.Text)));
             txtTotal.Text = Convert.ToString(Convert.ToDouble(txtSubt.Text) - Convert.ToDouble(txtImporteIva.Text));
        }

        private void radioButton4_CheckedChanged(object sender, EventArgs e)
        {
            MessageBox.Show("Ingrese el porcentaje de iva a denegar");

        }

        private void radioButton5_CheckedChanged(object sender, EventArgs e)
        {
            txtPorcentajeIva.Text = "21";

           // this.showForm(new MedioDePag
        }

        private void radioButton6_CheckedChanged(object sender, EventArgs e)
        {
            txtPorcentajeIva.Text = "21";
        }

        private void cmbClientes_MouseDoubleClick(object sender, MouseEventArgs e)
        {
        }


   
    }
}
